def solve(k: int, n: int) -> list[list[int]]:
    result = []
    
    # dp[i][j] 表示使用 i 个数字，和为 j 的组合
    dp = [[[] for _ in range(n + 1)] for _ in range(k + 1)]
    dp[0][0] = [[]]  # 初始化，选择 0 个数，和为 0，只有一个空组合

    # 逐步填充 dp 数组
    for i in range(1, k + 1):  # 遍历选择的数字个数
        for j in range(1, n + 1):  # 遍历目标和
            for num in range(1, j + 1):  # 尝试当前选择的数字 
                for combo in dp[i - 1][j - num]: # 若要选择一新的数字 需要使用dp[i-1]令target = j-num即dp[i-1][j-num] 
                    dp[i][j].append(combo + [num])  # 更新组合结果

    return dp[k][n]  # 返回所有由 k 个数字组成和为 n 的组合

if __name__ == "__main__":
    k, n = map(int, input().split())
    print(solve(k, n))
